package template;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.FileDescriptor;
import java.lang.reflect.Field;

public class MyMessage<T>{
    private T message;

    public T getMessage() {
        return message;
    }

    public void setMessage(T message) {
        this.message = message;
    }

    public static void main(String[] args) throws NoSuchFieldException {
        MyMessage<Double> message=new MyMessage<>();
        MyMessage<String> message1=new MyMessage<>();
        Class cls1=message.getClass();
        Class cls2=message1.getClass();
        System.out.println(cls1==cls2);
        Field filed1=cls1.getDeclaredField("message");
        Field filed2=cls2.getDeclaredField("message");
        System.out.println(filed1.getType());
        System.out.println(filed2.getType());
//        MyMessage<Number> message2=new MyMessage<>();
//        fun(message);
//        fun(message);//message是String，不是Numben子类，因此无法调用fun（）
//        fun(message2);
    }
    public static void fun(MyMessage<?> message){
        System.out.println(message.getMessage());
    }
//    public static void fun(MyMessage<? extends Number> message){
//        System.out.println(message.getMessage());
//    }
//    public static void fun(MyMessage<? super String> message){//类型是String 或 String的父类
//        message.setMessage("123");//修改的内容一定是String或Strig的父类
//        System.out.println(message.getMessage());
//    }
}
